<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <title>Subversion version control</title>
  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  <style type="text/css">
  <!--
    body {
      font-family: Verdana,Helvetica,Arial,sans-serif;
      font-size: small;
    }
    code,pre {
      font-family: "Courier New",Courier,monospace;
      font-size: 1em;
    }
    h3 {
      padding: 2px;
      border-left: 4px solid #FFCC00;
      border-bottom: 1px solid #FFCC00;
    }
    h4 {
      padding: 2px;
      border-left: 8px solid #FF9933;
      border-bottom: 1px solid #FF9933;
    }
  -->
  </style>
</head>
<body>

<h2>Accessing WinMerge Subversion repository</h2>

<h3>Why Subversion?</h3>
<p>We used <a href="http://www.sourceforge.net/">SourceForge.net</a>'s CVS service for years.
It served us pretty well. In 2006 SourceForge made Subversion also available as
service. And after short discussion WinMerge developers agreed to switch to Subversion.
It fits better to our needs than CVS. So we switched from CVS to Subversion in August 2006.
</p>
<h4>Where are old branches and tags?</h4>
<p>They are in CVS. We did not import them to Subversion. If you need (codes of)
old stable version you get them from project downloads.</p>

<h3>Web access</h3>
<p>Easiest way to browse our source code is through web. SourceForge.net utilizes
<a href="http://viewvc.tigris.org/">ViewVC</a> to access Subversion repositories via Web.
WinMerge Subversion repository is available at: <a href="http://winmerge.svn.sourceforge.net/viewvc/winmerge/">
http://winmerge.svn.sourceforge.net/viewvc/winmerge/</a>.
</p>

<h3>Subversion client programs</h3>
<ul>
  <li>
    <a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a> <strong>Recommended</strong> TortoiseSVN
    is a great Subversion client program for Windows. It does not need Subversion to be installed.
  </li>
  <li>
    <a href="http://subversion.tigris.org/">Subversion</a> The Thing. If you want to use commandline
    or if you want your own local Subversion repository, you need it. Not needed for TortoiseSVN.
  </li>
  <li>
   <a href="http://ankhsvn.open.collab.net/">AnkhSVN</a> is a Subversion plugin
   for Visual Studio (VS2005+).
   </li>
</ul>

<h3>Subversion documentation</h3>
<p><a href="http://svnbook.red-bean.com/">The Subversion Book</a> is the definite guide to Subversion.
Please try to find some time to look at it. There are also many Subversion and SVN resources available
in the net. Just listing couple of them here:</p>
<ul>
  <li>
    <a href="http://http://en.wikipedia.org/wiki/Subversion_(software)/">Wikipedia article</a> about
    Subversion.
  </li>
  <li>
    <a href="http://www.codeproject.com/useritems/XTortoiseSVN.asp">CodeProject article</a>Version
    Control for the Standalone Programmer - Part 1.
  </li>
</ul>

<h3>Repository URLs</h3>
<p>WinMerge Subversion repository URL is:<br>
<code><a href="tsvn:https://winmerge.svn.sourceforge.net/svnroot/winmerge">https://winmerge.svn.sourceforge.net/svnroot/winmerge</a></code>
</p>
<p>Using above URL will checkout all branches and tags. WinMerge development happens in
<i>trunk</i> and URL is:<br>
<code><a href="tsvn:https://winmerge.svn.sourceforge.net/svnroot/winmerge/trunk">https://winmerge.svn.sourceforge.net/svnroot/winmerge/trunk</a></code>
</p>
<p>Branches are in separate folder:<br>
<code><a href="tsvn:https://winmerge.svn.sourceforge.net/svnroot/winmerge/branches">https://winmerge.svn.sourceforge.net/svnroot/winmerge/branches</a></code>
</p>
<p>Current branches are:</p>
<ul>
  <li>2.6 release branch<br>
  <code><a href="tsvn:https://winmerge.svn.sourceforge.net/svnroot/winmerge/branches/R2_6">https://winmerge.svn.sourceforge.net/svnroot/winmerge/branches/R2_6</a></code></li>
  <li>2.8 release branch<br>
  <code><a href="tsvn:https://winmerge.svn.sourceforge.net/svnroot/winmerge/branches/R2_8">https://winmerge.svn.sourceforge.net/svnroot/winmerge/branches/R2_8</a></code></li>
  <li>2.10 release branch<br>
  <code><a href="tsvn:https://winmerge.svn.sourceforge.net/svnroot/winmerge/branches/R2_10">https://winmerge.svn.sourceforge.net/svnroot/winmerge/branches/R2_10</a></code></li>
  <li>2.12 release branch<br>
  <code><a href="tsvn:https://winmerge.svn.sourceforge.net/svnroot/winmerge/branches/R2_12">https://winmerge.svn.sourceforge.net/svnroot/winmerge/branches/R2_12</a></code></li>
  <li>2.14 release branch<br>
  <code><a href="tsvn:https://winmerge.svn.sourceforge.net/svnroot/winmerge/branches/R2_14">https://winmerge.svn.sourceforge.net/svnroot/winmerge/branches/R2_14</a></code></li>
</ul>
<p>Old branches (2.0 - 2.4 releases) are in CVS repository.</p>
<p>For every beta- and stable-release we add a tag. Tags are in folder:<br>
<code><a href="tsvn:https://winmerge.svn.sourceforge.net/svnroot/winmerge/tags">https://winmerge.svn.sourceforge.net/svnroot/winmerge/tags</a></code>
</p>

<h3>Quick intro to using TortoiseSVN</h3>
<h4>Checkout</h4>
<ol>
  <li> Create top-level folder for your development version (e.g. <code>c:\devel\WinMerge\</code>)</li>
  <li> In Windows explorer, go to that folder, and right-click with mouse in it</li>
  <li> Select <i>SVN Checkout...</i> -item</li>
  <li> Give trunk URL (see above) as a repository URL to get out development trunk</li>
</ol>

<p> SVN should now checkout WinMerge trunk to given folder. Note that there is NO modules in SVN like there
is with CVS, so all files in <code>/trunk</code> in SVN repository are added to folder you just created.
Don't checkout to some common folder expecting there will be WinMerge subfolder anyway!</p>

<h4>Checkin</h4>
<ol>
  <li> Update <strong>ALL</strong> needed files before checking in. With SVN it is just one checkin
    for one revision, so you can't do like with CVS to checkin one file or directory at a time.</li>
  <li> Right-click over WinMerge root folder which you created for WinMerge trunk</li>
  <li> Select <i>SVN Commit</i> from context menu</li>
  <li> Type message (preferably same than in <code>changes.txt</code>) to commit dialog</li>
  <li> Double-check that all files are in list of files</li>
  <li> Click OK-button</li>
  <li> Give your SourceFOrge.net login and password when TortoiseSVN asks them (it remembers them for
    the next time if you check the checkbox)</li>
</ol>

<p>Please copy/paste revision number to patch tracker item when you apply a patch to version control.
It makes it easier to track changes afterwards. That information is of course available through logs
and ViewVC, but it saves some time when revision number is visible in patch item.</p>

<h4>Update</h4>
<ol>
  <li> Right-click over WinMerge root folder which you created for WinMerge trunk</li>
  <li> Select <i>SVN Update</i> from context menu</li>
</ol>


</body>
</html>